Skip to content

Add three-way demo and update README#928

Open
willwashburn wants to merge 2 commits into
mainfrom
readme-updates
Open

Add three-way demo and update README#928
willwashburn wants to merge 2 commits into
mainfrom
readme-updates

Conversation

@willwashburn
Copy link
Copy Markdown
Member

Update Readme. Maybe

Add demo assets and refactor README: include a three-way-debate GIF/MP4 and VHS tape script under scripts/demos, update the readme-banner image, remove the fixed banner height, and insert the demo preview. Rework introductory copy and headings, clarify install/getting-started steps and SDK usage, and reorganize development/references for clarity. The new demo files (three-way-debate.gif, three-way-debate.mp4, three-way-debate.tape) provide a reproducible recording and playback setup for a three-agent debate demo.
@willwashburn willwashburn requested a review from khaliqgant as a code owner May 20, 2026 05:32
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b2ba5bca-2e35-4848-892b-128ee7bd481b

📥 Commits

Reviewing files that changed from the base of the PR and between e1022e4 and f57c3e2.

📒 Files selected for processing (1)
  • README.md
✅ Files skipped from review due to trivial changes (1)
  • README.md

📝 Walkthrough

Walkthrough

Updates README copy/structure (intro, build/use links, development snippet) and adds a new VHS demo script that records a tmux-hosted three-agent debate via agent-relay.

Changes

README documentation update

Layer / File(s) Summary
README intro, agents, and development sections
README.md
Replaced opening overview with a condensed intro emphasizing orchestration vs implementation; updated "What you can build" bullets; added a condensed "More:" links block; consolidated the Development section into a single command snippet and renamed "Useful references" to "References:".

Three-way debate demo script

Layer / File(s) Summary
VHS output and playback configuration
scripts/demos/three-way-debate.tape
VHS tape header declares GIF/MP4 outputs, shell selection, layout dimensions/padding, and playback/typing speed settings.
Agent-relay pre-flight setup
scripts/demos/three-way-debate.tape
Hidden setup kills existing session, starts agent-relay with logging to /tmp/agent-relay-vhs.log, and waits for readiness.
Multi-agent debate orchestration and recording
scripts/demos/three-way-debate.tape
Creates a 3-pane tmux layout, launches reviewer and adversarial agents with role-specific tasks, attaches VHS to the planner pane, starts the planner with a kickoff task, records for a fixed duration, then hides the tape and shuts down the tmux session and agent-relay.

🎯 3 (Moderate) | ⏱️ ~20 minutes

🐰 A README polished, a demo to show,
Three agents converse in a tmux-row,
Planner, reviewer, critic in play,
Recorded in motion, then tucked away.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description 'Update Readme. Maybe' is vague and incomplete, failing to follow the repository template which requires Summary and Test Plan sections with substantive content. Provide a detailed summary of changes made to the README and the new three-way demo script, and document the testing performed (manual testing completed, tests added/updated).
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Add three-way demo and update README' accurately summarizes the two main changes: addition of a new three-way debate demo script and updates to the README documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch readme-updates

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
scripts/demos/three-way-debate.tape (1)

43-43: ⚡ Quick win

Replace fixed sleeps with readiness gates to reduce demo flakiness.

Line 43 and Line 66 depend on timing assumptions; slower machines or auth/network jitter can still race startup. Prefer waiting on explicit readiness signals (relay ready + agents polling) before continuing.

Also applies to: 66-66

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/demos/three-way-debate.tape` at line 43, Replace the two fixed "Sleep
5s" steps with explicit readiness gates: remove the "Sleep 5s" lines and instead
wait for the relay to signal readiness (e.g., a "relay ready" probe or
health-endpoint check) and poll each agent until they report ready/connected
(implement a small loop that retries a status command with a short backoff and
timeout). Ensure both occurrences of "Sleep 5s" are changed to these readiness
checks so the demo proceeds only after relay_ready and all agents_ready
conditions are met.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Around line 39-41: Add a language tag to the fenced code block containing "use
the orchestrating-agent-relay skill to spawn a claude and codex agent and
[YOUR_TASK]" to satisfy markdownlint MD040; change the opening fence from ``` to
```text so the block becomes a labeled text code block.

In `@scripts/demos/three-way-debate.tape`:
- Line 39: Replace the hardcoded tmux session name "debate" with a generated
per-run variable (e.g., DEBATE_SESSION) and use that variable in every place the
script references the session (replace occurrences of "debate" in commands like
tmux kill-session -t debate and any tmux new-session/attach calls), generating
the value once at script start (use a safe unique suffix like $$ or a
timestamp/mktemp-style id) and persisting it for teardown; also ensure teardown
checks that the session exists before killing (tmux has-session -t
"$DEBATE_SESSION") so you don't accidentally kill an unrelated user session and
update any related agent-relay calls to reference the same variable.

---

Nitpick comments:
In `@scripts/demos/three-way-debate.tape`:
- Line 43: Replace the two fixed "Sleep 5s" steps with explicit readiness gates:
remove the "Sleep 5s" lines and instead wait for the relay to signal readiness
(e.g., a "relay ready" probe or health-endpoint check) and poll each agent until
they report ready/connected (implement a small loop that retries a status
command with a short backoff and timeout). Ensure both occurrences of "Sleep 5s"
are changed to these readiness checks so the demo proceeds only after
relay_ready and all agents_ready conditions are met.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: bf567b38-6a2c-481e-8995-9b0818b11790

📥 Commits

Reviewing files that changed from the base of the PR and between 9c1849b and e1022e4.

⛔ Files ignored due to path filters (3)
  • readme-banner.png is excluded by !**/*.png
  • scripts/demos/three-way-debate.gif is excluded by !**/*.gif
  • scripts/demos/three-way-debate.mp4 is excluded by !**/*.mp4
📒 Files selected for processing (2)
  • README.md
  • scripts/demos/three-way-debate.tape

Comment thread README.md
Comment on lines +39 to +41
```
use the orchestrating-agent-relay skill to spawn a claude and codex agent and [YOUR_TASK]
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language tag to the fenced block to satisfy markdownlint.

This block triggers MD040 because the fence has no language identifier.

Suggested fix
-   ```
+   ```text
    use the orchestrating-agent-relay skill to spawn a claude and codex agent and [YOUR_TASK]
    ```
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```
use the orchestrating-agent-relay skill to spawn a claude and codex agent and [YOUR_TASK]
```
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 39 - 41, Add a language tag to the fenced code block
containing "use the orchestrating-agent-relay skill to spawn a claude and codex
agent and [YOUR_TASK]" to satisfy markdownlint MD040; change the opening fence
from ``` to ```text so the block becomes a labeled text code block.

# ---------- Hidden setup ----------
Hide

Type "tmux kill-session -t debate 2>/dev/null; agent-relay down 2>/dev/null; true" Enter
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Avoid using a globally generic tmux session name for destructive operations.

Line 39 and Line 81 tear down debate, while Lines 46-48, 53, 57, 61-62 assume that same static name. This can kill a user’s unrelated tmux session if they already have one named debate.

Suggested hardening diff
+Type "SESSION=relay-three-way-debate-${USER:-user}-$$" Enter
-Type "tmux kill-session -t debate 2>/dev/null; agent-relay down 2>/dev/null; true" Enter
+Type "tmux kill-session -t \"$SESSION\" 2>/dev/null; agent-relay down 2>/dev/null; true" Enter

-Type "tmux new-session -d -s debate -x 240 -y 60" Enter
-Type "tmux split-window -h -p 45 -t debate" Enter
-Type "tmux split-window -v -t debate:0.1" Enter
+Type "tmux new-session -d -s \"$SESSION\" -x 240 -y 60" Enter
+Type "tmux split-window -h -p 45 -t \"$SESSION\"" Enter
+Type "tmux split-window -v -t \"$SESSION\":0.1" Enter

-Type `tmux send-keys -t debate:0.1 "agent-relay new reviewer claude --attach --mode passthrough --ephemeral --model sonnet --task 'Watch the general channel using mcp__relaycast__message_inbox_check every 20 seconds. When planner and adversarial deadlock, post a synthesis to general via mcp__relaycast__message_post and say REVIEWER ratified.'" Enter` Enter
+Type `tmux send-keys -t "$SESSION":0.1 "agent-relay new reviewer claude --attach --mode passthrough --ephemeral --model sonnet --task 'Watch the general channel using mcp__relaycast__message_inbox_check every 20 seconds. When planner and adversarial deadlock, post a synthesis to general via mcp__relaycast__message_post and say REVIEWER ratified.'" Enter` Enter

-Type `tmux send-keys -t debate:0.2 "agent-relay new adversarial claude --attach --mode passthrough --ephemeral --model sonnet --task 'Watch the general channel via mcp__relaycast__message_inbox_check every 15 seconds. When planner posts a plan, find 3 biggest flaws and post critique via mcp__relaycast__message_post. Iterate. Say ADVERSARIAL satisfied when convinced.'" Enter` Enter
+Type `tmux send-keys -t "$SESSION":0.2 "agent-relay new adversarial claude --attach --mode passthrough --ephemeral --model sonnet --task 'Watch the general channel via mcp__relaycast__message_inbox_check every 15 seconds. When planner posts a plan, find 3 biggest flaws and post critique via mcp__relaycast__message_post. Iterate. Say ADVERSARIAL satisfied when convinced.'" Enter` Enter

-Type "tmux select-pane -t debate:0.0" Enter
-Type "tmux attach -t debate" Enter
+Type "tmux select-pane -t \"$SESSION\":0.0" Enter
+Type "tmux attach -t \"$SESSION\"" Enter

-Type "tmux kill-session -t debate; agent-relay down" Enter
+Type "tmux kill-session -t \"$SESSION\"; agent-relay down" Enter

Also applies to: 46-48, 53-53, 57-57, 61-62, 81-81

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/demos/three-way-debate.tape` at line 39, Replace the hardcoded tmux
session name "debate" with a generated per-run variable (e.g., DEBATE_SESSION)
and use that variable in every place the script references the session (replace
occurrences of "debate" in commands like tmux kill-session -t debate and any
tmux new-session/attach calls), generating the value once at script start (use a
safe unique suffix like $$ or a timestamp/mktemp-style id) and persisting it for
teardown; also ensure teardown checks that the session exists before killing
(tmux has-session -t "$DEBATE_SESSION") so you don't accidentally kill an
unrelated user session and update any related agent-relay calls to reference the
same variable.

Removed outdated sections and added a brief description of real-time communication capabilities.
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 5 files

Re-trigger cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant